package practice;

import java.util.Arrays;

public class BubbleSortTest {
    public static void main(String[] args) {
        int[] arr = {10, 4, 2, 7, 5, 19, 11, 33, 28};
        System.out.println("原数组：" + Arrays.toString(arr));

        int i,j,temp;
        boolean flag;
        for (i = 0; i < arr.length - 1; i++) {
            System.out.println("正在进行第" + i + "轮排序");
            flag = false;   // 定义一个标志位，看看冒泡是否还在持续进行
            for (j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    // 比较相邻2个数，发现前面的数比后面的数大，就交换位置
                    temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                    flag = true;   // 只要交换一次，flag就为true，说明冒泡还在继续
                }
            }
            if (!flag) {
                System.out.println("第" + i + "轮没有冒泡，排序结束");
                break;
            }
        }
        System.out.println("排序后数组：" + Arrays.toString(arr));

        // 冒泡排序过程：
        // 原数组：10,4,2,7,5,19,11,33,28
        // 第1次：4,2,7,5,10,11,19,28,33
        // 第2次：2,4,5,7,10,11,19,28,33    => 排序完成
        // 第3次：2,4,5,7,10,11,19,28,33
        // 第4次：2,4,5,7,10,11,19,28,33
        // 第5次：2,4,5,7,10,11,19,28,33
        // 第6次：2,4,5,7,10,11,19,28,33
        // 第7次：2,4,5,7,10,11,19,28,33
        // 第8次：2,4,5,7,10,11,19,28,33
    }
}
